/*
 * > /*
>  * INSANE - Interactive Structural Analysis Environment
>  *
>  * Copyright (C) 2003-2004
>  * Universidade Federal de Minas Gerais
>  * Escola de Engenharia
>  * Departamento de Engenharia de Estruturas
>  *
>  * Author's email :     insane@dees.ufmg.br
>  * Author's Website :   http://www.dees.ufmg.br/insane
>  *
>  * This program is free software; you can redistribute it and/or
>  * modify it under the terms of the GNU General Public License
>  * as published by the Free Software Foundation; either version 2
>  * of the License, or any later version.
>  *
>  * This program is distributed in the hope that it will be useful,
>  * but WITHOUT ANY WARRANTY; without even the implied warranty of
>  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>  * GNU General Public License for more details.
>  *
>  * You should have received a copy of the GNU General Public License
>  * along with this program; if not, write to the Free Software
>  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-
> 1307, USA.
 *
 */
package br.ufmg.dees.insane.ui.rich.learn.learn_view.equation_view.command;

import java.util.ArrayList;
import java.util.ListIterator;

import javax.swing.JFrame;

import br.ufmg.dees.insane.draw.Draw;
import br.ufmg.dees.insane.draw.EquationsDraw;
import br.ufmg.dees.insane.draw.GridEquationsDraw;
import br.ufmg.dees.insane.model.disc.node.Node;
import br.ufmg.dees.insane.ui.rich.learn.learn_controller.Controller;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.LearnInterface;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.command.Command;

/**
 * @author Nicoliello, Renata & Pitangueira, Roque
 * @since	Junho 2005
 */
public class SetShowSelectedEquationsCommand implements Command{

	private LearnInterface parent;
	
//*****************************************************************************
	
    /** Creates new AutomaticEquationsCommand */
    public SetShowSelectedEquationsCommand(JFrame parent) {
        this.parent = (LearnInterface)parent;
    }
	
//*****************************************************************************
	
	/** Execute method. */
    public void execute() {
    	  	
			//StructuralMech sm = new StructuralMech();
	    	//sm.setFemModel(parent.getView().getController().getModel());
    	((Controller)parent.getView().getController()).getDriver().numberNodeEquations();
			ArrayList nds = parent.getView().getController().getSelection();
			
			ListIterator femnodes = nds.listIterator();
		
			Node node;
			while (femnodes.hasNext()) {
				node = (Node)femnodes.next();
				String gAnlType = ((Controller)parent.getView().getController()).getModel().getGlobalAnalysisModel().getType();
				
				if (!(gAnlType.equals("Grid"))) {
//					Fx equations
					if (node.getEquation(0) > 0) {
						Draw draw = new EquationsDraw.Out();
						draw.setRepresents(node);
						((EquationsDraw)draw).setValue(10);
						draw.setAngle(node.getAngle()*Math.PI/180);
						draw.setLabel(String.valueOf(node.getEquation(0)));
						parent.getView().getController().getEquations().add(draw);
					}
					//Fy equations
					if (node.getEquation(1) > 0) {
						Draw draw = new EquationsDraw.Out();
						draw.setRepresents(node);
						((EquationsDraw)draw).setValue(10);
						draw.setAngle(Math.toRadians(90) + node.getAngle()*Math.PI/180);
						draw.setLabel(String.valueOf(node.getEquation(1)));
						parent.getView().getController().getEquations().add(draw);
					}
					//Mz equations
					if (node.getEquation(5) > 0) {
						Draw draw = new EquationsDraw.AntiClockwise();
						draw.setRepresents(node);
						((EquationsDraw)draw).setValue(10);
						draw.setLabel(String.valueOf(node.getEquation(5)));
						parent.getView().getController().getEquations().add(draw);
					}
				} else {
					if (node.getEquation(1) > 0) {
						Draw draw = new GridEquationsDraw.Out();
						draw.setRepresents(node);
						((GridEquationsDraw)draw).setValue(10);
						draw.setLabel(String.valueOf(node.getEquation(1)));
						parent.getView().getController().getEquations().add(draw);
					}
					//Fy equations
					if (node.getEquation(3) > 0) {
						Draw draw = new GridEquationsDraw.AntiClockwise();
						draw.setRepresents(node);
						((GridEquationsDraw)draw).setValue(10);
						draw.setAngle(node.getAngle()*Math.PI/180);
						draw.setLabel(String.valueOf(node.getEquation(3)));
						parent.getView().getController().getEquations().add(draw);
					}
					//Mz equations
					if (node.getEquation(5) > 0) {
						Draw draw = new GridEquationsDraw.AntiClockwise();
						draw.setRepresents(node);
						((GridEquationsDraw)draw).setValue(10);
						draw.setAngle(Math.toRadians(90) + node.getAngle()*Math.PI/180);
						draw.setLabel(String.valueOf(node.getEquation(5)));
						parent.getView().getController().getEquations().add(draw);
					}
				}	
				
				//if ((Controller)parent.getView().getController()).getModel().getGlobalAnalysisModel())
				
				
				//End of adding inelastic Equations
				
				parent.getView().getDrawingArea().repaint();
			
			}
			
			parent.getView().getController().unSelectAll();
		}
    	
		
//		parent.addToUndo((Command)this.clone());
	
    
//*****************************************************************************
	
    /**
     * Impossible to undo - not implemented.
     */
    public void undo() {}
    
//*****************************************************************************
	
    /**
     * Impossible to redo - not implemented.
     */
    public void redo() {}
	
//*****************************************************************************

}
